package com.welink.cmp.dao.metadata.dataobject;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 主机数据对象
 */
@Data
@TableName("host")
public class HostDO {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id; // 主键ID

    private String assetsId; // 资产ID

    private String sn; // 序列号

    private String name; // 主机名

    private String vendor; // 厂商

    private String brand; // 品牌

    private String model; // 型号

    private String modelAlias; // 型号别名

    private Integer unitSize; // 尺寸（U）

    private String rackNo; // 机柜编号

    private String rackUnitPosition; // 机柜U位

    private Integer dataCenterCode; // 机房CODE

    private LocalDateTime expirationTime; // 过保日期

    private LocalDateTime launchedTime; // 上架时间

    private Integer isVirtualDevice; // 是否是虚拟设备

    private Integer cpuCores; // CPU核数

    private Integer memoryCapacity; // 内存大小（MB）

    private Integer diskCapacity; // 磁盘容量（GB）

    private String gpuModel; // GPU型号

    private String bmcIp; // 管理IP

    private String innerIp; // 内网IP

    private String outerIp; // 出口IP

    private String ingressIp; // 入口IP

    private String os; // 操作系统

    private String supportedRaid; // 支持的RAID类型

    private String hardwareDetail; // 硬件明细

    private String softwareDetail; // 软件明细

    private String refId; // 实例ID

    private String refName; // 实例名称

    private Long accountId; // 账号ID

    private Integer chargeType; // 付费方式: 0-按量付费, 1-包年包月

    private LocalDateTime purchaseTime; // 购买时间

    /**
     * 用途
     * 1、标签字段
     * 2、支持多标签
     * X86、ARM、Edge、Storage、NAS
     */
    private String label;
    /**
     * 租约到期时间
     */
    private LocalDateTime leaseExpiredTime;
    /**
     * 备注
     */
    private String remark;

    private Byte status; // 状态: 0-禁用，1-启用

    @TableLogic
    private Long isDel; // 标记是否已删除: 0未删除, 大于0 已删除
    @Version
    private Long version; // 乐观锁版本号

    private LocalDateTime createTime; // 创建时间

    private LocalDateTime updateTime; // 更新时间

    private String createBy; // 创建人

    private String updateBy; // 修改人
}
